package saint.manager;

import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.util.TypedValue;

public class DPIConvert {
	/**
	 * This method converts dp unit to equivalent device specific value in pixels. 
	 * 
	 * @param dp A value in dp(Device independent pixels) unit. Which we need to convert into pixels
	 * @param context Context to get resources and device specific display metrics
	 * @return A float value to represent Pixels equivalent to dp according to device
	 */
	public static float convertDpToPixel(float dp,Context context) {
		Resources resource = context.getResources();
		DisplayMetrics metrics = resource.getDisplayMetrics();
		float px = dp * (metrics.density/160f);
		return px;
	}
	
	/**
	 * This method converts device specific pixels to device independent pixels.
	 * 
	 * @param px A value in px (pixels) unit. Which we need to convert into db
	 * @param context Context to get resources and device specific display metrics
	 * @return A float value to represent db equivalent to px value
	 */
	public static float convertPixelsToDp(float px,Context context){
	    Resources resources = context.getResources();
	    DisplayMetrics metrics = resources.getDisplayMetrics();
	    float dp = px / (metrics.densityDpi / 160f);
	    return dp;
	}
	
	/**
	 * Get dpi value in integer
	 * @param dp Value of dpi
	 * @param context Context to get resource and device specific display metrics
	 * @return value of dpi in integer
	 */
	public static float getDPI(float dp, Context context) {
		Resources res = context.getResources();
		DisplayMetrics matrices = res.getDisplayMetrics();
		float dpi = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, matrices);
		return dpi;
	}
}
